home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 1
/
Cream of the Crop 1.iso
/
PROGRAM
/
CUJ9208.ARJ
/
RAMEY.EXE
/
STKTEST.CC
< prev
next >
Wrap
C/C++ Source or Header
|
1991-06-01
|
2KB
|
102 lines
/* program for testing stack management routines. */
#include <stdio.h>
#include <stdlib.h>
#include "stack.h"
char menu[] = "\
1. init 8. drop\n\
2. alloc 9. push\n\
3. free 10. pop\n\
4. blks 11. end\n\
5. unused 12. windup\n\
6. avl 13. set stack address\n\
7. space\n\
\n\
:";
main(){
/* display options */
STACK *address;
void *ptr;
size_t size;
char c, response[12];
int i;
unsigned int j;
address = (STACK *)NULL;
for(;;){
printf("current address=%lx\n\n", address);
printf(menu);
gets(response);
switch(i = strtol(response, NULL, 10)){
default:
continue;
case 1:
printf("type number of segments:");
gets(response);
j = strtoul(response, NULL, 10);
printf("type segment size:");
gets(response);
size = (int)strtoul(response, NULL, 10);
i = stk_init(size, j);
printf("%d segments created\n", i);
continue;
case 2:
address = stk_alloc();
continue;
case 3:
stk_free(address);
puts("stack freed");
continue;
case 4:
i = stk_blks(address);
printf("blks returned=%d\n", i);
continue;
case 5:
i = stk_unused();
printf("blks unused=%d\n", i);
continue;
case 6:
i = stk_avl(address);
printf("space available in last block=%d\n",i);
continue;
case 7:
printf("type in number of bytes desired:");
gets(response);
size = (int)strtoul(response, NULL, 10);
ptr = stk_space(address, size);
printf("ptr=%lx\n", ptr);
continue;
case 8:
stk_drop(address);
puts("last allocation dropped");
continue;
case 9:
i = stk_push(address);
printf("frame was %ssuccessfully pushed\n", i ? "" : "un");
continue;
case 10:
i = stk_pop(address);
puts(i ? "frame popped" : "nothing to pop");
continue;
case 11:
ptr = stk_end(address);
printf("end of stack=%lx\n", ptr);
continue;
case 12:
stk_windup();
puts("stack system closed");
continue;
case 13:
printf("type address of stack to be used:");
gets(response);
address = (STACK *)strtoul(response, NULL, 16);
continue;
}
}
}